package cn.tedu.powerfulfitness.mapper;

import cn.tedu.powerfulfitness.pojo.entity.Coach;
import cn.tedu.powerfulfitness.pojo.vo.CoachListItemVO;
import cn.tedu.powerfulfitness.pojo.vo.CoachStandardVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface CoachMapper {
    /**
     * 插入教练数据
     *
     * @param coach 教练数据
     * @return 受影响的行数
     */
    int insert(Coach coach);

    /**
     * 批量插入教练数据
     *
     * @param coachList 相册教练的集合
     * @return 受影响的行数
     */
    int insertBatch(List<Coach> coachList);

    /**
     * 根据ID删除教练
     *
     * @param id 尝试删除的教练的ID
     * @return 受影响的行数
     */
    int deleteById(long id);

    /**
     * 根据若干个ID批量删除教练
     *
     * @param ids 尝试删除的若干个教练的ID
     * @return 受影响的行数
     */
    int deleteByIds(Long[] ids);

    /**
     * 修改教练数据
     *
     * @param coach 封装了尝试修改数据的教练的ID和新数据的对象
     * @return 受影响的行数
     */
    int update(Coach coach);

    /**
     * 统计教练数据的数量
     *
     * @return 教练数据的数量
     */
    int count();

    /**
     * 根据手机统计每个类型的教练数量
     *
     * @param tel 手机号
     * @return  每个手机号的教练数量
     */
    int countByTel(Long tel);

    /**
     * 根据分类统计每个类型的教练数量
     *
     * @param seniority 类型
     * @return  每个类型的教练数量
     */
    int countBySeniority(String seniority);

    /**
     * 统计非某id但手机号匹配的教练数据的数量，用于检查是否存在其它数据使用了相同的手机号
     *
     * @param id   教练id
     * @param tel 手机号
     * @return 匹配手机号但不匹配id的数据的数量
     */
    int countByTelAndNotId(Long id, Long tel);

    /**
     * 根据ID查询教练详情
     *
     * @param id 尝试获取详情的教练数据的ID
     * @return 匹配的教练详情，如果没有匹配的数据，则返回null
     */
    CoachStandardVO getStandardById(Long id);

    /**
     * 查询教练列表
     *
     * @return 相册列表
     */
    List<CoachListItemVO> list();
}
